package com.hotacorp.opencloud.flowservice.service;

import java.io.InputStream;
import java.util.Map;

import com.hotacorp.opencloud.common.mybatisplus.PageData;
import com.hotacorp.opencloud.flowservice.dto.DeployDetailInfo;
import com.hotacorp.opencloud.flowservice.dto.DeployReq;

/**
 * 流程发布处理接口
 * @author lwg
 *
 */
public interface DeploymentHandler {
	/**
	 * 发布模型
	 * @param tenantid
	 * @param request
	 * @throws Exception
	 */
	void create(String tenantid, DeployReq request) throws Exception;
	/**
	 * 查询模型
	 * @param params
	 * @return
	 * @throws Exception
	 */
	PageData query(Map<String, Object> params)  throws Exception;
	/**
	 * 删除模型
	 * @param tenantid
	 * @param deploymentIds
	 */
	void delete(String tenantid, String[] deploymentIds);
	/**
	 * 取模型图
	 * @param tenantid
	 * @param deploymentId
	 * @return
	 */
	InputStream getBpmn(String tenantid, String deploymentId);
	/**
	 * 取模型详细信息
	 * @param tenantid
	 * @param deploymentId
	 * @return
	 * @throws Exception
	 */
	DeployDetailInfo getDeployBpmn(String tenantid, String deploymentId) throws Exception;
	/**
	 * 查询流程
	 * @param params
	 * @return
	 * @throws Exception
	 */
	PageData queryProcDef(Map<String, Object> params)  throws Exception;
	/**
	 * 删除流程
	 * @param tenantid
	 * @param procdefIds
	 */
	void deleteProcDef(String tenantid, String[] procdefIds);
	/**
	 * 挂起流程
	 * @param tenantid
	 * @param procdefIds
	 */
	void suspendProcDef(String tenantid, String[] procdefIds);
	/**
	 * 激活流程
	 * @param tenantid
	 * @param procdefIds
	 */
	void activatesProcDef(String tenantid, String[] procdefIds);
	
	/**
	 * 取流程图
	 * @param tenantid
	 * @param procdefId
	 * @return
	 */
	InputStream getProcDefBpmn(String tenantid, String procdefId);
	
}
